package com.ppc.service;

import com.ppc.result.PageResult;
import com.ppc.vo.TaskDetailVO;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

/**
 * 工人任务相关接口
 *
 * @author Jeferry
 * @date 2023/12/20
 */
public interface WorkerTaskService {

  /**
   * 分页查询订单
   *
   * @param page       页码
   * @param pageSize   页大小
   * @param taskStatus 任务状态
   * @return {@link PageResult}
   */
  PageResult queryTaskWithStatus(Integer page, Integer pageSize, Integer taskStatus);

  /**
   * 查看订单详情
   *
   * @param taskId 订单id
   * @return {@link TaskDetailVO}
   */
  TaskDetailVO queryTaskInformation(Long taskId);

  /**
   * 修改订单状态
   *
   * @param taskId     订单id
   * @param taskStatus 订单状态
   */
  void changeTaskStatus(Long taskId, Integer taskStatus);

  /**
   * 提交订单文件(不涉及文件上传)
   *
   * @param taskId     订单id
   * @param fileIdList 文件id列表
   */
  void handinTask(Long taskId, List<Long> fileIdList);

  /**
   * 给订单打分
   *
   * @param taskId 需求id
   * @param comment   打分
   */
  void commentTask(Long taskId, Integer comment);

  /**
   * 判断订单是否已经评分
   *
   * @param taskId 需求id
   * @return boolean
   */
  boolean ifTaskCommented(Long taskId);

  /**
   * 查看已完成订单评分
   *
   * @param taskId 需求id
   * @return {@link Integer}
   */
  Integer getEmployerRating(Long taskId);

  /**
   * 分页查询订单（只含申诉）
   *
   * @param page 页码
   * @param pageSize 页大小
   * @return {@link PageResult}
   */
  PageResult queryTaskStatusIsClaim(Integer page, Integer pageSize);

  Long uploadFile(MultipartFile file);
}
